package com.suning.sawp.dto.esb;

import java.util.List;

import org.apache.commons.lang3.builder.ToStringBuilder;

import com.thoughtworks.xstream.annotations.XStreamAlias;

@XStreamAlias("MbfBody")
public class LogisticsQueryResp {

    /**
     * 期望送货时间 格式：20140306000428
     */
    @XStreamAlias("hopeArrivalTime")
    private String hopeArrivalTime;

    /**
     * 预计出库时间 格式：20140306000428
     */
    @XStreamAlias("estimateOutTime")
    private String estimateOutTime;

    /**
     * 服务单OMS行号
     */
    @XStreamAlias("srvOmsItemId")
    private String srvOmsItemId;

    /**
     * 物流详细
     */
    @XStreamAlias("logisticsDetails")
    List<LogisticsDetail> logisticsDetails;
    
    /**
     * 物流详细
     */
    @XStreamAlias("statusDetails")
    List<StatusDetail> statusDetails;

    public List<StatusDetail> getStatusDetails() {
        return statusDetails;
    }

    public void setStatusDetails(List<StatusDetail> statusDetails) {
        this.statusDetails = statusDetails;
    }

    public String getHopeArrivalTime() {
        return hopeArrivalTime;
    }

    public void setHopeArrivalTime(String hopeArrivalTime) {
        this.hopeArrivalTime = hopeArrivalTime;
    }

    public String getEstimateOutTime() {
        return estimateOutTime;
    }

    public void setEstimateOutTime(String estimateOutTime) {
        this.estimateOutTime = estimateOutTime;
    }

    public String getSrvOmsItemId() {
        return srvOmsItemId;
    }

    public void setSrvOmsItemId(String srvOmsItemId) {
        this.srvOmsItemId = srvOmsItemId;
    }

    public List<LogisticsDetail> getLogisticsDetails() {
        return logisticsDetails;
    }

    public void setLogisticsDetails(List<LogisticsDetail> logisticsDetails) {
        this.logisticsDetails = logisticsDetails;
    }

    @XStreamAlias("logisticsDetail")
    public static class LogisticsDetail {
        
        /**
         * 正向OMS订单行号
         */
        @XStreamAlias("orderItemId")
        private String orderItemId;
        
        /**
         * 物流操作日期时间
                                格式：20140306000428
         */
        @XStreamAlias("operateTime")
        private String operateTime;
        
        /**
         * 订单类别
         */
        @XStreamAlias("orderCategory")
        private String orderCategory;
        
        /**
         * 操作类型编码,取值见文档
         */
        @XStreamAlias("operateTypeCode")
        private String operateTypeCode;
        
        /**
         * 当前站点描述
         */
        @XStreamAlias("currentSite")
        private String currentSite;
        
        /**
         * 下一站点（当前站点编码）
         */
        @XStreamAlias("nextSite")
        private String nextSite;
        
        /**
         * 操作人员+排程时间，取值见文档
         */
        @XStreamAlias("operator")
        private String operator;
        
        /**
         * 操作人员电话
         */
        @XStreamAlias("phoneNo")
        private String phoneNo;
        
        /**
         * 校验码
         */
        @XStreamAlias("checkCode")
        private String checkCode;
        
        /**
         * 快递单号
         */
        @XStreamAlias("expressCode")
        private String expressCode;
        
        /**
         * 快递公司
         */
        @XStreamAlias("expressCompany")
        private String expressCompany;
        
        /**
         * 站点属性
         */
        @XStreamAlias("siteProperty")
        private String siteProperty;
        
        /**
         * 当前站点编码
         */
        @XStreamAlias("currentSiteCode")
        private String currentSiteCode;
        
        /**
         * 送货员
         */
        @XStreamAlias("deliveryman")
        private String deliveryman;
        
        /**
         * 原因
         */
        @XStreamAlias("reason")
        private String reason;
        
        /**
         * 排程时间
         */
        @XStreamAlias("shcedulingTime")
        private String shcedulingTime;

        public String getOrderItemId() {
            return orderItemId;
        }

        public void setOrderItemId(String orderItemId) {
            this.orderItemId = orderItemId;
        }

        public String getOperateTime() {
            return operateTime;
        }

        public void setOperateTime(String operateTime) {
            this.operateTime = operateTime;
        }

        public String getOrderCategory() {
            return orderCategory;
        }

        public void setOrderCategory(String orderCategory) {
            this.orderCategory = orderCategory;
        }

        public String getOperateTypeCode() {
            return operateTypeCode;
        }

        public void setOperateTypeCode(String operateTypeCode) {
            this.operateTypeCode = operateTypeCode;
        }

        public String getCurrentSite() {
            return currentSite;
        }

        public void setCurrentSite(String currentSite) {
            this.currentSite = currentSite;
        }

        public String getNextSite() {
            return nextSite;
        }

        public void setNextSite(String nextSite) {
            this.nextSite = nextSite;
        }

        public String getOperator() {
            return operator;
        }

        public void setOperator(String operator) {
            this.operator = operator;
        }

        public String getPhoneNo() {
            return phoneNo;
        }

        public void setPhoneNo(String phoneNo) {
            this.phoneNo = phoneNo;
        }

        public String getCheckCode() {
            return checkCode;
        }

        public void setCheckCode(String checkCode) {
            this.checkCode = checkCode;
        }

        public String getExpressCode() {
            return expressCode;
        }

        public void setExpressCode(String expressCode) {
            this.expressCode = expressCode;
        }

        public String getExpressCompany() {
            return expressCompany;
        }

        public void setExpressCompany(String expressCompany) {
            this.expressCompany = expressCompany;
        }

        public String getSiteProperty() {
            return siteProperty;
        }

        public void setSiteProperty(String siteProperty) {
            this.siteProperty = siteProperty;
        }

        public String getCurrentSiteCode() {
            return currentSiteCode;
        }

        public void setCurrentSiteCode(String currentSiteCode) {
            this.currentSiteCode = currentSiteCode;
        }

        public String getDeliveryman() {
            return deliveryman;
        }

        public void setDeliveryman(String deliveryman) {
            this.deliveryman = deliveryman;
        }

        public String getReason() {
            return reason;
        }

        public void setReason(String reason) {
            this.reason = reason;
        }
        
        public String getShcedulingTime() {
            return shcedulingTime;
        }

        public void setShcedulingTime(String shcedulingTime) {
            this.shcedulingTime = shcedulingTime;
        }

        @Override
        public String toString() {
            return ToStringBuilder.reflectionToString(this);
        }
    }

    public class StatusDetail{
        /**
         * OMS订单行号
         */
        @XStreamAlias("orderItemId")
        private String orderItemId;
        
        /**
         * 订单类别
         */
        @XStreamAlias("orderCategory")
        private String orderCategory;
        
        /**
         * 订单状态类型
         */
        @XStreamAlias("statusType")
        private String statusType;
        
        /**
         * 订单行状态编码
         */
        @XStreamAlias("statusCode")        
        private String statusCode;
        
        /**
         * 更新日期时间
         */
        @XStreamAlias("updateTime")        
        private String updateTime;
        
        public String getOrderItemId() {
            return orderItemId;
        }

        public void setOrderItemId(String orderItemId) {
            this.orderItemId = orderItemId;
        }

        public String getOrderCategory() {
            return orderCategory;
        }

        public void setOrderCategory(String orderCategory) {
            this.orderCategory = orderCategory;
        }

        public String getStatusType() {
            return statusType;
        }

        public void setStatusType(String statusType) {
            this.statusType = statusType;
        }

        public String getStatusCode() {
            return statusCode;
        }

        public void setStatusCode(String statusCode) {
            this.statusCode = statusCode;
        }

        public String getUpdateTime() {
            return updateTime;
        }

        public void setUpdateTime(String updateTime) {
            this.updateTime = updateTime;
        }

        @Override
        public String toString() {
            return ToStringBuilder.reflectionToString(this);
        }
    }
    @Override
    public String toString() {
        return ToStringBuilder.reflectionToString(this);
    }
}
